#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QtNetwork>
#include <QList>
#include "config.h"
#include "netcore.h"
//#include "mytcpsocket.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    // UI层槽函数
    void on_actionConfig_triggered();

    void on_actionabout_triggered();

    void on_clientWidget_cellDoubleClicked(int row, int column);

    void on_ppiActionGroup_triggered(QAction *action);

    void on_bitActionGroup_triggered(QAction *action);

    void on_fpsActionGroup_triggered(QAction *action);

    // 网络错误槽函数
    void on_error(int code, QString msg);

    // 客户端变化槽函数
    void on_client(int code, MyTcpSocket * myTcpSocket);

private:
    Ui::MainWindow *ui;

    // 配置文件操作类
    Config config;

    // 网络核心类，生命周期和主对话框相同
    NetCore * netCore = nullptr;

private:
    void addListItem(int Descriptor, QString IpAddress, QString HostName, int Delay = 0);  //添加客户端列表中项

    void updateListItem(int Descriptor, int Delay); //修改客户端列表中项

    void removeListItem(int Descriptor);            //移除客户端列表中项

    void setActionSelected(QAction * item);             //设置菜单项中被选中（显示图标）

    void setStatusBarText();                            //设置状态栏，默认显示当前主机数量

    void setStatusBarText(QString strStatus, int timeout);               //设置状态栏，参数为状态栏文字
};
#endif // MAINWINDOW_H
